home *** CD-ROM | disk | FTP | other *** search
- package org.apache.xalan.xpath;
-
- import java.util.Hashtable;
- import java.util.Vector;
- import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
- import org.w3c.dom.Document;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
-
- public class FuncKey extends Function {
- public XObject execute(XPath var1, XPathSupport var2, Node var3, int var4, Vector var5) throws SAXException {
- Object var6 = null;
- Document var7 = var3.getNodeType() == 9 ? (Document)var3 : var3.getOwnerDocument();
- if (var7 == null) {
- var1.error(var3, 4);
- }
-
- if (var5.size() != 2) {
- var1.error(45);
- }
-
- String var8 = ((XObject)var5.elementAt(0)).str();
- XObject var9 = (XObject)var5.elementAt(1);
- boolean var10 = var9.getType() == 4;
- MutableNodeListImpl var11 = new MutableNodeListImpl();
- XNodeSet var17 = new XNodeSet(var11);
- if (var10) {
- int var12 = var9.nodeset().getLength();
- Hashtable var13 = var12 > 1 ? new Hashtable() : null;
-
- for(int var14 = 0; var14 < var12; ++var14) {
- String var15 = XMLParserLiaisonDefault.getNodeData(var9.nodeset().item(var14));
- if (var15 != null) {
- if (var12 > 1) {
- if (var13.get(var15) != null) {
- continue;
- }
-
- var13.put(var15, var1.m_currentPattern);
- }
-
- NodeList var16 = var2.getNodeSetByKey(var7, var8, var15, var2.getNamespaceContext());
- var11.addNodesInDocOrder(var16, var2);
- }
- }
- } else {
- String var18 = var9.str();
- NodeList var19 = var2.getNodeSetByKey(var7, var8, var18, var2.getNamespaceContext());
- var11.addNodesInDocOrder(var19, var2);
- }
-
- return var17;
- }
- }
-